Heroku PostgreSQL是一種Heroku提供的PostgreSQL服務,可免費使用,免費版使用有一定的限制,如果需要付費方案可見Heroku Postgres。
PostgreSQL是一種開源的物件-關聯式資料庫資料庫管理系統,用來儲存與管理資料
https://elements.heroku.com/addons/heroku-postgresql
進入網頁點擊右上Install Heroku Postgres
選擇資費方案,這邊我選擇預設的Hobby Dev方案
在App to provision to搜尋並選擇你的app
將Heroku Postgres提供給你的app
點Submit Order Form將表單送出
在resources頁面會看到你的Heroku PostgreSQL
psycopg2是python語言的PostgreSQL資料庫接口,它的主要優勢在於完全支持Python DB API 2.0,以及安全的多執行緒支持
如前面沒有安裝到psycopg,輸入安裝psycopg
pip uninstall psycopg2
import psycopg2到你的專案
import psycopg2
在heroku你的app儀表網頁下的resources頁面,點擊進入Heroku PostgreSQL
點擊settings-->Database Credentials顯示你的資料庫驗證資訊
將Database Credentials中的資料填至psycopg2.connect函數中並執行
conn = psycopg2.connect(database="資料庫名稱",
user="使用者帳號",
password="密碼",
host="主機位址",
port="5432")
print("Opened database successfully")
這邊建立一個範例資料表
id(主鍵)|姓名|使用者id
------------- | -------------
cursor = conn.cursor()
cursor.execute("CREATE TABLE userdata (id serial PRIMARY KEY, name VARCHAR(50), userid VARCHAR(50));")
print("Create table successfully")
cursor.close()
cursor = conn.cursor()
cursor.execute("INSERT INTO userdata (name, userid) VALUES (%s, %s);", ("小明", "a123456"))
cursor.execute("INSERT INTO userdata (name, userid) VALUES (%s, %s);", ("小王", "b654321"))
cursor.execute("INSERT INTO userdata (name, userid) VALUES (%s, %s);", ("小華", "c987654"))
print("Inserted 3 rows of data")
conn.commit()
cursor.close()
cursor.execute("SELECT * FROM userdata;")#選擇資料表userdata
rows = cursor.fetchall() #讀出所有資料
for row in rows: #將讀到的資料全部print出來
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
cursor = conn.cursor()
cursor.execute("UPDATE inventory SET userid = %s WHERE name = %s;", ("d123789", "小明"))
conn.commit()
print("Updated 1 row of data")
cursor.close()
cursor = conn.cursor()
cursor.execute("DELETE FROM userdata WHERE name = %s;", ("小華",))
print("Deleted 1 row of data")
conn.commit()
cursor.close()
參考:
https://www.itsfun.com.tw/psycopg2/wiki-4311324-5543304